package user

import (
	"context"
	"vblog/common"
)

//  ctx 可以传递非业务字段 ，如triaceId

// 定义接口
// 实现这些方法

type Service interface {
	CreateUser(context.Context, *CreateUserRequest) (*User, error)
	QueryUser(context.Context, *QueryUserRequest) (*UserSet, error)
	DescribeUser(context.Context, *DescribeUserRequest) (*User, error)
}

type (
	QueryUserRequest struct {
		// UserId     int    `json:"user_id,omitempty"`
		Username string `json:"username,omitempty"`
		*common.PageRequest
	}
	DescribeUserRequest struct {
		UserId   int    `json:"user_id,omitempty"`
		Username string `json:"username,omitempty"`
	}
)

func NewQueryUserRequest() *QueryUserRequest {
	return &QueryUserRequest{
		PageRequest: common.NewPageRequest(),
	}
}

// // TODO 分页查询 ，抽到common
// func (q *QueryUserRequest) Offset() int {
// 	return (q.PageNumber - 1) * q.PageSize
// }

func NewDescribeUserRequest() *DescribeUserRequest {
	return &DescribeUserRequest{}
}
